<?php
/* Генерация PDF версии справочника
 * Параметры:
 *  format      : A4 | A5
 *      формат бумаги
 *  useGroups   : 1 | 0
 *      использование групп
 */
require_once 'lib/pdf/tcpdf.php'; // подключаем библиотеку
require_once 'connect.php';

$format = $_REQUEST["format"];
$useGroups = isset($_REQUEST["useGroups"]) ? $_REQUEST["useGroups"] : 1;

$mysql = connect();
$query = "SET NAMES 'utf8'";
$mysql->query($query);

$orderBy = $useGroups ? "`Groups`.`GROUPNAME`,`Users`.`NAME`" : "`Users`.`NAME`";
// найдем всех пользователей в базе --------------------------------------------
$query = "SELECT `Users`.`NAME`, `Users`.`GID`, `Groups`.`GROUPNAME`, `Users`.`NUMBER`, `Users`.`MOBILE`
				  FROM `Groups`, `Users`
				  WHERE `Users`.`GID` = `Groups`.`GID`
				  ORDER BY ".$orderBy." ASC";
$result = $mysql->query($query) or die("Запрос к базе данных не может быть обработан.");
$color = array("#ffffff","#f3f3f3");
$c = 0;

$dom = new DOMDocument();

// создаем массив строк $rows
while ($row = $result->fetch_array(MYSQLI_ASSOC)){
   
    // Если $curGroup != $row['GROUPNAME'] -- добавляем tr с названием группы
    if (($currGroup != $row['GROUPNAME']) && $useGroups){
        $tr = $dom->createElement("tr");

        $td = $dom->createElement("td", $row['GROUPNAME']." ".$countRows);
        $tr->appendChild($td);
        // Выравнивание по центру
        $attr = $dom->createAttribute("align");
        $attr->value = "center";
        $tr->appendChild($attr);
        // colSpan
        $attr = $dom->createAttribute("colSpan");
        $attr->value = "3";
        $td->appendChild($attr);
        // Цвет
        $attr = $dom->createAttribute("bgcolor");
        $attr->value = "#999999";
        $tr->appendChild($attr);

        $currGroup = $row['GROUPNAME'];
        $c = 0;
        $rows[]=$tr;
    }
    $tr = $dom->createElement("tr");
    // Цвет
    $attr = $dom->createAttribute("bgcolor");
    $attr->value = $color[$c];
    $tr->appendChild($attr);
    $c = abs($c - 1);

// Имя абонента
    $td = $dom->createElement("td", "  ".$row['NAME']." ".$countRows);
    $tr->appendChild($td);
  // Атрибуты
    // Выравнивание по левому краю
    $attr = $dom->createAttribute("align");
    $attr->value = "left";
    $td->appendChild($attr);	
    // Ширина
    $attr = $dom->createAttribute("width");
    $attr->value = "70%";
    $td->appendChild($attr);
// Внутренний номер
    $td = $dom->createElement("td", $row['NUMBER']);
    $tr->appendChild($td);
	
  // Атрибуты
    // Выравнивание по центру
    $attr = $dom->createAttribute("align");
    $attr->value = "center";
    $td->appendChild($attr);
    // Ширина
    $attr = $dom->createAttribute("width");
    $attr->value = "10%";
    $td->appendChild($attr);
// Номер мобильного
    $td = $dom->createElement("td", $row['MOBILE']);
    $tr->appendChild($td);
  // Атрибуты
    // Выравнивание по центру
    $attr = $dom->createAttribute("align");
    $attr->value = "center";
    $td->appendChild($attr);
    // Ширина
    $attr = $dom->createAttribute("width");
    $attr->value = "20%";
    $td->appendChild($attr);
    $rows[]=$tr;
}
$rowsTotal = count($rows);
switch ($format) {
    default:
    case "A4":
        switch ($rowsTotal){
            case ($rowsTotal <= 45):
                $fontSize = 12;
                $maxRows = 45;
                break;
            case ($rowsTotal <= 49):
                $fontSize = 11;
                $maxRows = 49;
                break;
            case ($rowsTotal <= 54):
                $fontSize = 10;
                $maxRows = 54;
                break;
            default:
                $fontSize = 9;
                $maxRows = 61;
        }
        $tableWidth = 540;
        $format = "A4"; //для default
        $orientation = "P";
        break;
    case "A5":
        switch ($rowsTotal){
            case ($rowsTotal <= 20):
                $fontSize = 12;
                $maxRows = 20;
                break;
            case ($rowsTotal <= 21):
                $fontSize = 11;
                $maxRows = 21;
                break;
            case ($rowsTotal <= 23):
                $fontSize = 10;
                $maxRows = 23;
                break;
            case ($rowsTotal <= 26):
                $fontSize = 9;
                $maxRows = 26;
                break;
            default:
                $fontSize = 8;
                $maxRows = 29;
        }
        $tableWidth = 260;
        $orientation = "L";
        break;
}
// Формируем массив таблиц
$tablesTotal = ceil($rowsTotal / $maxRows);
for ($j = 0; $j < $tablesTotal; $j++){
    
    // Формируем HTML таблицу ------------------------------------------------------
    $table = $dom->createElement("table");
    $dom->appendChild($table);
    // установим аттрибуты для таблицы
    $attr = $dom->createAttribute("border");
    $attr->value = "1";
    $table->appendChild($attr);//border="1"

    $attr = $dom->createAttribute("width");
    $attr->value = $tableWidth;
    $table->appendChild($attr);//width="540"

   // $table->appendChild($row);
    for ($i = $j*$maxRows; ($i < $j*$maxRows+$maxRows) && ($i < $rowsTotal); $i++){
        $table->appendChild($rows[$i]);
    }
    $tables[]=$table;
}
//$html = $dom->saveXML($tables[0]);
//    echo $html;

//Формируем PDF документ ------------------------------------------------------
$pdf = new TCPDF($orientation, 'mm', $format, true, 'UTF-8', false);
// отключаем хидер и футер
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// устанавливаем отступы
    //$pdf->SetMargins(1, 1, 15);

//$pdf->SetDrawColor(0, 0, 0); // устанавливаем цвет рамки (черный)
$pdf->SetTextColor(0, 0, 0); // устанавливаем цвет текста (черный)

for ($i = 0; $i < count($tables); $i++){
    if ($i % 2 == 0){
        $pdf->AddPage();
       // echo $i;
        // выводим дату
        $pdf->SetXY(30, 4);
        $pdf->SetFont('tahoma', '', 7);
        $pdf->write(10, date("d.m.y"), '', 0, 'R');
        $pdf->SetXY(10, 13);
    } else $pdf->SetXY(109, 13);
    // Выводим таблицу
    $pdf->SetFont('tahoma', '', $fontSize);
    $html = $dom->saveXML($tables[$i]);
    $pdf->writeHTML($html, false, true, true);
}
$pdf->Output('phonebook.pdf','D');
?>
